package cn.com.cifi.mars.mapper.mars;

import cn.com.cifi.mars.bean.dto.SysNoticeDto;
import cn.com.cifi.mars.entity.SysNotice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author yyd
 * @since 2019-10-16
 */
public interface SysNoticeMapper extends BaseMapper<SysNotice> {

	/**
	 *  待办分页查询
	 * @param page
	 * @param isDelete 是否删除
	 * @return
	 */
	List<SysNoticeDto> selectSysNoticePage(Page page, @Param("isDelete")String isDelete);

	/**
	 * 查询分期下指定类型待办信息
	 * @param stagesId 分期id
	 * @param type 类型
	 * @param state 状态
	 * @param isDelete 是否删除
	 * @return List
	 */
	List<SysNotice> selectByStagesIdAndState(@Param("stagesId")String stagesId, @Param("type")String type, @Param("state")String state, @Param("isDelete")int isDelete);

	/**
	 *  查询分期下指定类型待办信息
	 * @param projectFid 分期id
	 * @param noticeType 待办类型
	 * @param versionType 版本类型
	 * @param noticeState 待办状态
	 * @param isDel 是否删除
	 * @return List
	 */
	List<SysNotice> selectModeByProjectFidAndVersionType(@Param("fid") String projectFid,@Param("noticeType") String noticeType, @Param("versionType") String versionType, @Param("noticeState") String noticeState, @Param("isDel") int isDel);

	/**
	 *  修改分期下指定类型和状态的待办信息
	 * @param projectFid 分期id
	 * @param noticeType 待办类型
	 * @param noticeSource 待办来源
	 * @param noticeState  待办状态
	 * @param user 操作人
	 * @param now 时间
	 * @param isDel 是否删除
	 */
	void updateNoticeStateByStageIdAndType(@Param("fid") String projectFid,@Param("noticeType") String noticeType,@Param("noticeSource") String noticeSource,
							   @Param("noticeState") String noticeState,@Param("user") String user,@Param("now") LocalDateTime now,@Param("isDel") Integer isDel);

	/**
	 *  查询分期下指定类型待办信息
	 * @param projectFid 分期id
	 * @param noticeType  待办类型
	 * @param versionType 版本类型
	 * @param noticeState 待办状态
	 * @param isDel 是否删除
	 * @return List
	 */
	List<SysNotice> selectNoticeByProjectFidAndTaskType(@Param("fid") String projectFid,@Param("list") List<String> noticeType, @Param("versionType") String versionType, @Param("noticeState") String noticeState, @Param("isDel") int isDel);

	/**
	 *  查询分期下指定类型待办信息
	 * @param projectFid 分期id
	 * @param noticeType 待办类型
	 * @param versionType 版本类型
	 * @param noticeState 待办状态
	 * @param isDel 是否删除
	 * @return List
	 */
	List<SysNotice> selectNoticeByProcessMode(@Param("fid")String projectFid,@Param("noticeType") String noticeType,@Param("versionType") String versionType,@Param("noticeState") String noticeState,@Param("isDel") int isDel);

	/**
	 * 查询项目下是否有手动未处理代办
	 * @param projectId
	 * @param processingMode
	 * @param noticeState
	 * @param type
	 * @param isDel
	 * @return
	 */
	List<SysNotice> selectNoticeByProjectId(@Param("projectId")String projectId,@Param("processingMode")String processingMode,@Param("noticeState") String noticeState,@Param("type")String type,@Param("isDel") int isDel);

	/**
	 * 查询未处理的手动代办且无门户信息
	 * @param taskType
	 * @param processingMode
	 * @param state
	 * @param isDel
	 * @return List<SysNotice>
	 */
	List<SysNotice> selectNoticeByProcessingModeAndState(@Param("taskType") String taskType,@Param("processingMode") String processingMode,@Param("state") String state,@Param("isDel") int isDel);
}
